package common.consts;

/**
 * Created by aceyin on 15/6/27.
 */
public interface Recruitments {


    /**
     * 支付类型
     */
    enum PayTypes {
        ONLINE, CASH;

        public static boolean isCash(String payType) {
            if (payType == null) {
                return false;
            }
            return CASH.name().equalsIgnoreCase(payType);
        }
    }

    /**
     * 自定义分组。
     * 修改/增加新的分组之后，需要修改 recruitment_group.sql
     * 对应也修改/增加新的分组。
     */
    enum Groups {
        MONEY("daily_pay"),
        AUTO_RECRUIT("auto_recruit"),
        PREPAY("prepay"),
        NEARBY("location");

        public final String attr;

        Groups(String attr) {
            this.attr = attr;
        }

        public static boolean isValid(String name) {
            for (Groups g : values()) {
                if (g.name().equalsIgnoreCase(name)) {
                    return true;
                }
            }
            return false;
        }
    }

    /**
     * 招聘状态
     */
    enum Status {
        /* 未填写完整 */
        INCOMPLETE,
        /* 正常状态 */
        NORMAL,
        /* 招聘取消 */
        CANCELED,
        /* 招聘已经结束:时间到了预设的时间 */
        ENDED,
        /* 招聘已经完成:已经结算了，完成整个招聘流程了 */
        FINISHED;

        public static boolean isValid(String value) {
            if (value == null) {
                return false;
            }
            for (Status status : values()) {
                if (status.name().equalsIgnoreCase(value)) {
                    return true;
                }
            }
            return false;
        }

        public static boolean isCanceled(String status) {
            if (status == null) {
                return false;
            }
            return CANCELED.name().equalsIgnoreCase(status);
        }

        public static boolean isIncomplete(String status) {
            if (status == null) {
                return false;
            }
            return INCOMPLETE.name().equalsIgnoreCase(status);
        }

        public static boolean isEnded(String status) {
            if (status == null) {
                return false;
            }
            return ENDED.name().equalsIgnoreCase(status);
        }

        public static boolean isNormal(String status) {
            if (status == null) {
                return false;
            }
            return NORMAL.name().equalsIgnoreCase(status);
        }
    }

    /**
     * 招聘生命周期
     */
    enum Lifecycle {
        /* 未完成 */
        INCOMPLETE,
        /* 可以发布了 */
        READY,
        /* 招聘中 */
        ONGOING,
        /* 过期了(超过报名截止时间了) */
        OVERDUE,
        /* 员工开始工作了 */
        WORKING,
        /* 支付阶段 */
        PAYMENT,
        /* 招聘完成了 */
        FINISHED
    }
}
